package com.tea.room.util;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

/**
 * fastjson util
 * 
 * @author ShiP
 *
 */
public class JsonUtil {

    /**
     * json字符串转化json对象
     * 
     * @param jsonString
     *            json对象
     * @return
     */
    public static JSONObject jsonStrToJsonObject(String jsonString) {
        JSONObject jsonObject = JSON.parseObject(jsonString);
        return jsonObject;
    }

    /**
     * json对象转换字符串
     * 
     * @param jsonObject
     *            json字符串
     * @return
     */
    public static String jsonObjectToString(JSONObject jsonObject) {
        String jsonString = jsonObject.toJSONString();
        return jsonString;
    }

    /**
     * json字符串转化json数组
     * 
     * @param jsonString
     *            json数组
     * @return
     */
    public static JSONArray jsonStrToJsonArray(String jsonString) {
        JSONArray jsonArray = JSON.parseArray(jsonString);
        return jsonArray;
    }

    /**
     * map转json
     * 
     * @param map
     * @return
     */
    public static JSONObject mapToJsonObject(Map map) {
        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(map));
        return jsonObject;
    }

    /**
     * json转map
     * 
     * @param jsonObject
     * @return map
     */
    public static Map<String, Object> jsonToMap(String jsonObject) {
        JSONObject json = jsonStrToJsonObject(jsonObject);
        Map<String, Object> map = (Map<String, Object>) json;
        return map;
    }

    /**
     * list转json
     * 
     * @param <T>
     * 
     * @param list
     * @return
     */
    public static <T> JSONArray listToJsonObject(List<T> list) {
        JSONArray jsonObject = JSONArray.parseArray(JSON.toJSONString(list));
        return jsonObject;
    }

    /**
     * 
     * @param jsonObject
     * @param clazz
     * @return
     */
    public static <T> List<T> jsonObjectToList(String jsonObject, Class<T> clazz) {
        List<T> listString = JSON.parseArray(jsonObject, clazz);
        return listString;
    }

    /**
     * 
     * @param jsonObject
     * @param type
     * @return
     */
    public static <T> T jsonObjectToListMap(String jsonObject, TypeReference<T> type) {
        T parseObject = JSON.parseObject(jsonObject, type);
        return parseObject;
    }

    /**
     * 
     * @param obj
     * @return
     */
    public static JSONObject javaBeanToJson(Object obj) {
        JSONObject json = (JSONObject) JSON.toJSON(obj);
        return json;
    }

}
